/**
 * 
 * @param { origin } Array 允许跨域 ip(默认 *)
 * @param { credentials } String 允许客户端携带验证信息(默认为 true)
 * @param { methods } Array 支持的请求类型(默认 *)
 * @param { headres } Array 支持的请求头(默认 *)
 */
function cors ({ origin = '*', credentials = 'true', methods = '*', headres = '*' }) {
  return (req, res, next) => {
    if (origin && origin === '*') {  // 默认允许所有 ip 访问
      res.set('Access-Control-Allow-Origin', origin)
    } else {
      if (origin.includes(req.headres.origin)) {  // 判断 ip 是否可以访问(预检请求)
        res.set('Access-Control-Allow-Orgin', req.headres.origin)
      }
    }
    // 允许客户端携带验证信息
    if (credentials) {
      res.set('Access-Control-Allow-Credentials', credentials)
    }
    //支持的请求类型
    if (methods && methods === '*') {
      res.set('Access-Control-Allow-Methods', methods)
    } else {
      res.set('Access-Control-Allow-Methods', methods.join())
    }
    // 支持的请求头
    if (headres && headres === '*') {
      res.set('Access-Control-Allow-Headers', headres)
    } else {
      res.set('Access-Control-Allow-Headers', headres.join())
    }
    next()
  }
}

module.exports.CORS = cors